package Generic.泛型的继承;

import java.util.ArrayList;

public class 介绍 {
    public static void main(String[] args) {
        /*
        泛型不具备继承性，但是数据具备继承性
         */
        ArrayList<Ye>listYe=new ArrayList<>();
        ArrayList<Fu>listFu=new ArrayList<>();
        ArrayList<Zi>listZi=new ArrayList<>();

        //泛型不具备继承性
//        method(listYe);
//        method(listFu);
//        method(listZi);

        //数据具备继承性
        listYe.add(new Ye());
        listFu.add(new Fu());
        listZi.add(new Zi());
    }
    /*
    *泛型里面写的是什么类型，那么只能传递什么类型的数据
    * 弊端:可以接收任意的数据类型
    *
    *希望，可以对接收的类型进行限制
    *需要所有泛型的通配符"
    *   ?表示不确定的类型
    *   它可以进行类型的确定
    *   ? extends E:表示传递的E或者E的所有子类类型
    *   ? super E:表示可以传递E或者E的所有父类类型
    *
    * 应用场景:
    *   1.在定义方法，接口，类的时候，如果类型不确定，那么就可以使用泛型类，泛型方法，泛型接口
    * 泛型的通配符:
    *   关键点:可以限制类型的范围
    *
    * */
    public static void method(ArrayList<? super Ye> list){

    }
}
class Ye{}
class  Fu extends Ye{}
class Zi extends Fu{}
